﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Solution2
    {
        public void Rotate(int[] nums, int k)
        {
            int n = nums.Length;
            while (k > n)
            {
                k %= n;
            }
            int[] row = new int[n];
            Array.Copy(nums,row, n);
            for (int i = 0; i < row.Length; i++)
            {
                int p = (i + k) % n;
                nums[p] = row[i];
            }
            foreach (var item in nums)
            {
                Console.Write(item);
            }
            //int n = nums.Length;
            //while (k > n)
            //{                    //当右移次数大于数组长度，取模后的只为新的要移动的次数
            //    k = k % n;
            //}
            //int[] rot = new int[n];         //新建一个数组,将nums幅值进去（此时空间复杂度不满足O(1)）
            //                                rot=Array.copyOf(nums, n);  //目的是最后结果在nums数组上操作，这样LeetCode系统可以检测
            //for (int j = 0; j < n; j++)
            //{
            //    rot[j] = nums[j];
            //}
            //for (int i = 0; i < n; i++)
            //{   //每个数都循环移动k个数
            //    int p = (i + k) % n;
            //    nums[p] = rot[i];
            //}


            //foreach (int num in nums)
            //{
            //    Console.Write(num);
            //}
        }
    }
}
